<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/BasicTemplate.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Rewired Documentation | Control Mapper</title>
<!-- InstanceEndEditable -->
<!-- InstanceParam name="isRoot" type="boolean" value="false" -->
<!-- InstanceParam name="wide" type="boolean" value="false" -->
<link href="files/css/styles.css" rel="stylesheet" type="text/css" />
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="/projects/rewired/files/images/favicon.ico?v=1" />
<!-- Apple Icons -->
<!-- For iPad with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="files/images/favicon_152x152.png?v=1">
<!-- For iPad with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="files/images/favicon_144x144.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="files/images/favicon_120x120.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="files/images/favicon_114x114.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="files/images/favicon_76x76.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="files/images/favicon_72x72.png?v=1">
<!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
<link rel="apple-touch-icon-precomposed" href="files/images/favicon_57x57.png?v=1">
</head>

<body>


<div class="container">

    <div class="google-search-bar">
        <script>
          (function() {
            var cx = '007961148920562332911:oocvtwz5jce';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
          })();
        </script>
        <gcse:search></gcse:search>
    </div>

  <div class="content">
	
	
	 
    <div class="page-body">
	
    
         
	    
      	<div class="sidebar-nav">
	        <h4><a href="Documentation.html">Documentation</a></h4>
	        <ul>
	          <li><a href="Overview.html">Overview</a></li>
	          <li><a href="ReleaseNotes.txt">Release Notes</a></li>
          </ul>
	        <strong>Essentials:</strong>
            <ol>
              <li><a href="Installation.html">Installation</a></li>
              <li><a href="QuickStart.html">Quick Start</a></li>
              <li><a href="BasicUsage.html">Basic Usage</a></li>
              <li><a href="Deployment.html">Deployment</a></li>
              <li><a href="BestPractices.html">Best Practices</a></li>
              <li><a href="RewiredEditor.html">Rewired Editor</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs/api-reference" target="_blank">API Reference</a></li>
            </ol>
            <strong>Concepts:</strong>
            <ul>
              <li><a href="InputManager.html">Input Manager</a></li>
              <li><a href="Players.html">Players</a></li>
              <li><a href="Actions.html">Actions</a></li>
              <li><a href="InputBehaviors.html">Input Behaviors</a></li>
              <li><a href="Controllers.html">Controllers</a></li>
              <li><a href="ControllerMaps.html">Controller Maps</a></li>
              <li><a href="ControllerTemplates.html">Controller Templates</a></li>
              <li><a href="MapCategories.html">Map Categories</a></li>
              <li><a href="Layouts.html">Layouts</a></li>
              <li><a href="LayoutManager.html">Layout Manager</a></li>
              <li><a href="MapEnabler.html">Map Enabler</a></li>
              <li><a href="CustomControllers.html">Custom Controllers</a></li>
            </ul>
            <strong>Extras:</strong>
            <ul>
              <li><a href="ControlMapper.html" title="Control Mapper">Control Mapper</a></li>
	          <li><a href="TouchControls.html" title="Touch Controls">Touch Controls</a></li>
              <li><a href="RewiredStandaloneInputModule.html">Rewired Standalone Input Module</a></li>
	          <li><a href="UnityInputOverride.html" title="Unity Input Override">Unity Input Override</a></li>
            </ul>
            <strong>Misc:</strong>
            <ul>
	          <li><a href="ComponentControls.html" title="Component Controls">Component Controls</a></li>
	          <li><a href="PlayerControllers.html" title="Player Controllers">Player Controllers</a></li>
	          <li><a href="InputMapper.html" title="Input Mapper">Input Mapper</a></li>
	          <li><a href="UserDataStore.html" title="User Data Store">User Data Store</a></li>
            </ul>
            <strong>How To's:</strong>
            <ul>
            	<li><a href="HowTos.html">See all topics...</a></li>
            </ul>
            <strong>Help:</strong>
            <ul>
              <li><a href="SupportedControllers.html" title="Supported Controllers">Supported Controllers</a></li>
              <li><a href="Overview.html#tested-platforms" title="Tested Platforms">Tested Platforms</a></li>
              <li><a href="Troubleshooting.html" title="Troubleshooting">Troubleshooting</a></li>
              <li><a href="KnownIssues.html">Known Issues</a></li>
              <li><a href="SpecialPlatformSupport.html" title="Special Platform Support">Special Platform Support</a></li>
	          <li><a href="Examples.html" title="Examples">Examples</a></li>
              <li><a href="Integration.html">Integrations</a></li>
	          <li><a href="Updating.html" title="Updating Rewired">Updating Rewired</a></li>
            </ul>
            <strong>FAQ</strong>
            <ul>
            	<li><a href="FAQ.html">See all topics...</a></li>
            </ul>
            <strong>Unity Help:</strong>
            <ul>
              <li><a href="https://docs.unity3d.com/Manual/" target="_blank">Unity Manual</a></li>
              <li><a href="https://docs.unity3d.com/ScriptReference/" target="_blank">Unity Script Reference</a></li>
              <li><a href="https://unity3d.com/learn/tutorials/modules" target="_blank">Unity Tutorials</a></li>
            </ul>
            <strong>Links:</strong>
            <ul>
              <li><a href="https://guavaman.com/projects/rewired">Rewired Website</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs">Web Documentation</a></li>
            </ul>
        </div>
        
    
    	<div class="main-body">
	        <div class="logo"><a href="https://guavaman.com/projects/rewired" title="Rewired"><img src="files/images/rewired-logo.png" width="173" height="139" alt="Rewired" /></a></div>
                     
            <h1>
            <!-- InstanceBeginEditable name="PageHeader" -->Control Mapper
      <!-- InstanceEndEditable -->
            </h1>
            
			<!-- InstanceBeginEditable name="MainBody" -->

    <ul>
      <li><a href="#overview">Overview</a></li>
      <li><a href="#installation">Installation</a></li>
      <li><a href="#setup">Setup</a>
        <ul>
          <li><a href="#rewiredstandaloneinputmodule">Rewired Standalone Input Module</a></li>
          <li><a href="#setup-rewired-input-manager">Rewired Input Manager Settings</a></li>
          <li><a href="#setup-recommended-control-scheme">Recommended UI control scheme</a></li>
        </ul>
      </li>
      <li><a href="#saving-and-loading">Saving and Loading User Data</a></li>
      <li><a href="#conflict-checking">Conflict Checking</a></li>
      <li><a href="#theming">Theming</a></li>
      <li><a href="#language">Lanugage</a></li>
      <li><a href="#misc-notes">Misc Notes</a></li>
      <li><a href="#faq">FAQ</a></li>
      <li><a href="#inspector-options">Inspector Options</a></li>
  </ul>
    <p>&nbsp;</p>
    <h2><a name="overview" id="overview"></a>Overview</h2>
    <p>Control Mapper is a customizable, responsive control mapping system included with Rewired that you can use in your games. This system provides complete controller remapping including keyboard, mouse, and joystick support, axis calibration, joystick and mouse sensitivity, single or multiple players, controller maps, and much more. Control Mapper can be fully controlled with keyboard, mouse, joystick, and/or touch controls. Control Mapper uses Unity's new GUI system and therefore requires Unity 4.6+.</p>
<p>Control Mapper has many options which you can customize to fit your game's needs:</p>
    <ul>
      <li>Optional display of Players for multiplayer games.</li>
      <li>Optional multiple controllers per-player.</li>
      <li>Optional Input Behavior customization.</li>
      <li>Optional Map Category display.</li>
      <li>Customizable list of Actions to show per category.</li>
      <li>Optional display of Action category names.</li>
      <li>Optional Keyboard, Mouse, and Controller support.</li>
      <li>Choose the number of alternate fields per controller type.</li>
      <li>Customizable theme settings for changing colors and button styles.</li>
      <li>Customizable language settings for changing button and window labels and messages.</li>
      <li>Menu control by your choice of Rewired Player(s).</li>
      <li>Customizable Actions for opening, closing, and canceling.</li>
    </ul>
    <p>Example screen showing multiple players, multiple controllers per-player, sensitivity settings, multiple map categories, with keyboard, mouse, and controller support.</p>
<p><img src="files/images/controlmapper_screen1.png" width="600" height="526" alt="Control Mapper" /></p>
    <p>Example screen showing a view of a simple 1-player game with only one map category, one controller, keyboard support with 1 mapping per keyboard key, and using a different theme.</p>
    <p><img src="files/images/controlmapper_screen2.png" width="400" height="518" alt="Control Mapper" /></p>
    <p>&nbsp;</p>
    <p>The information that follows assumes you are familiar with working with input in Rewired. If you are not, read through the <a href="Documentation.html">documentation</a> first. Step by step basics of how to use Rewired will not be covered here.</p>
    <p>Control Mapper files including examples can be found in the Rewired/Extras/ControlMapper folder.</p>
    <p>&nbsp;</p>
    <hr />
    <h2><a name="installation" id="installation"></a>Installation</h2>
    <p>Control Mapper can be installed during installation of Rewired or at any time from the menu. To install Control Mapper from the menu:</p>
    <ul>
      <li>Window -&gt; Rewired -&gt; Extras -&gt; Control Mapper -&gt; Install (Standard)</li>
      <li>Window -&gt; Rewired -&gt; Extras -&gt; Control Mapper -&gt; Install (Text Mesh Pro)</li>
  </ul>
    <p> Control Mapper comes in two varieties:</p>
    <ul>
      <li>Standard - uses Unity UI Text components for text.</li>
      <li>Text Mesh Pro - uses Text Mesh Pro for text.</li>
      </ul>
    <p>The Text Mesh Pro version requires Unity 2018.1+. Text Mesh Pro must be installed from the Package Manager and the Text Mesh Pro Essential Resources pack must be installed before installing Control Mapper.</p>
    <p>Only one version can be installed in the project at a time.</p>
    <h3>Important</h3>
    <p>If you have an existing Control Mapper setup, you will not be able to easily migrate to a different version of Control Mapper because your copy will not automatically inherit all the changes required to work. The Text Mesh Pro version uses different text components than the Unity UI version, and all the object references to text components will be lost when switching between versions. The best way to switch from Standard to the Text Mesh Pro version is to rebuild your setup using the Text Mesh Pro version.</p>
<h3>Uninstalling</h3>
    <p>Delete the Rewired/Extras/ControlMapper folder.</p>
<p>&nbsp;</p>
<hr />
    <h2><a name="setup" id="setup"></a>Setup</h2>
    <p>The Control Mapper is a prefab which you can drag into your scene and use. This prefab includes the Canvas which will be used to render the UI elements.</p>
    <p>To add Control Mapper to your scene, you can add it from either of the following menus:</p>
    <ul>
    <li>Window -&gt; Rewired -&gt; Create -&gt; UI -&gt; Control Mapper</li>
    <li>Game Object -&gt; Create Other -&gt; Rewired -&gt; UI -&gt; Control Mapper</li>
    </ul>
    <p>Or you can add it as a live prefab by dragging it in from the project view. (Note: If using a live prefab, do not commit any changes to the prefab source or they will be overwritten the next time you update Rewired. You can, however, make a new prefab of your own out if it and modify that.)</p>
<p>Once the Control Mapper is in your scene, you can customize many options by changing settings in the inspector. The first thing you must do is to link your Rewired Input Manager object to the Control Mapper object in the Rewired Input Manager field in the inspector. Once you have done this, you can proceed to customize settings.</p>
    <p><img src="files/images/controlmapper_inspector_rewired-input-manager.png" width="676" height="47" /></p>
    <p>See <a href="#inspector-options">Inspector Options</a> for more details about the Control Mapper inspector settings.    </p>
    <h3><a name="rewiredstandaloneinputmodule" id="rewiredstandaloneinptmodule"></a>RewiredStandaloneInputModule</h3>
<p>Control of the UI is handled by the RewiredStandaloneInputModule. This component must be added to the EventSystem in the scene and the default StandaloneInputModule must be disabled or removed.</p>
    <p>You can either create a normal Unity Event System and replace the Standalone Input Module with the Rewired Standalone Input Module component or you can create a Rewired Event System from either of the menu items:</p>
    <ul>
      <li>GameObject -&gt; Create Other -&gt; Rewired -&gt; UI -&gt; Rewired Event System</li>
      <li>Window -&gt; Rewired -&gt; Create -&gt; UI -&gt; Rewired Event System</li>
      </ul>
    <p><img src="files/images/rewiredstandaloneinputmodule_inspector_actions.png" class="right" />Four Actions must be set up in the Rewired Input Manager and the RewiredStandaloneInputModule in order to control the UI. <strong>These four Actions must have names that match exactly in both the Rewired Input Manager and the RewiredStandaloneInputModule</strong>.</p>
    <ol>
      <li>Horizontal Axis - The Action that will control Left/Right movement in the UI.</li>
      <li>Vertical Axis - The Action that will control Up/Down movement in the UI.</li>
      <li>Submit - The Action that submits a button.</li>
      <li>Cancel - The Action that cancels.</li>
    </ol>
      <p>The actual names you use are up to you. Of course these Actions must also be assigned to one or more keyboard or joystick maps and assigned to a Player to be functional. </p>
      <p>If you want to use <a href="RewiredStandaloneInputModule.html#virtual-mouse">mouse pointers</a> exclusively to interact with the UI, you can set all these Actions to blank strings.</p>
      <p>Alternately, you can set Actions by id by enabling &quot;Set Actions By Id.&quot;</p>
<p>NOTE: It is <strong>HIGHLY</strong> recommended that you create unique menu-only Actions for these UI controls in a separate controller map category from your game Actions. If you use your in-game actions such as &quot;Move Horizonal&quot; or &quot;Jump&quot; for these UI controls, you run the risk of allowing the user to render the UI unusable because they removed an assignment for one of these game Actions which was also  controlling the UI.</p>
<p>The settings in the RewiredStandaloneInputModule will determine which Players can control the UI. If you check &quot;Use All Rewired Game Players&quot;, all Players besides the System Player that have a map configured with these UI Actions will be able to control the UI. If you check &quot;Use Rewired System Player&quot;, the same will be true for the System Player. If instead you only want specific Players to control the UI, you can set these Player Ids individually.</p>
<p>If the UI control speed with a Joystick seems too slow or fast, adjust the &quot;Input Actions Per Second&quot; setting.</p>
<h3><a name="setup-rewired-input-manager" id="setup-rewired-input-manager"></a>Rewired Input Manager settings
</h3>
<p>This image shows the 4 actions that have been set up for controlling the UI.</p>
<p><img src="files/images/controlmapper_rewiredinputmanager_uiactions.png" width="484" height="291" /></p>
<h3><a name="setup-recommended-control-scheme" id="setup-recommended-control-scheme"></a>Recommended UI control scheme</h3>
<p>Rewired and the Control Mapper system are very flexible. As such, every possible situation cannot be &quot;automagically&quot; taken care of for you. You need to spend some time to plan and understand your control scheme.</p>
    <p>It is possible to create a situation where the user is able to break his ability to control the UI by unassigning necessary Actions such as the Submit button. With a mouse available on the system, this would not be a problem as it is not dependent on Actions, but on platforms without mouse or touch input to fall back on in the case of user error, you need to consider these situations. It may not be advisable to allow users to remap everything.</p>
    <p><strong><a name="setup-keyboard" id="setup-keyboard"></a>Keyboard:</strong><br />
      It is generally a good idea to have fixed keyboard UI controls that the user cannot remap, such as the arrow keys for navigation and the enter keys for submit. These can either be owned by the System Player or any/all of your Players. You can set up a separate Map Category for these protected UI controls and protect them from being replaced during reassignment excluding this Map Category from conflict checking in all your other Map Categories in the Rewired Input Manager. Also, do not add this Map Category to the list of assignable maps in the Control Mapper inspector options.</p>
    <p><strong><a name="setup-mouse" id="setup-mouse"></a>Mouse</strong>:<br />
      Do not assign UI Submit or Cancel Actions to Mouse Left Button or Mouse Right Button or you will receive double-clicks evey time the mouse button is pressed over a button. The mouse button click on a UI element is based on mouse cursor screen position and does not use the Action system. If you assign these UI Actions to the mouse buttons, if a button/field is currently selected and you click anywhere on the screen, the selected buton/field will receive the UISubmit or UICancel Action regardless of where you click on the screen.</p>
<p><strong><a name="setup-joysticks" id="setup-joysticks"></a>Joysticks:</strong><br />
  Recognized joysticks should have a map created for UI control if you wish to support joystick UI navigation. If you want the user to be able to remap these menu controls, it is recommended that you create yet another separate  Map Category for these user-configurable joystick controls. By making a separate Map Category for these controls, you are able to allow the user to remap these joystick controls while still keeping the keyboard controls protected. Conflict checking settings for the Map Category should exclude all game controls and vice versa if you want the user to be able to map the same elements in different categories without being warned about conflicts.</p>
    <p><strong><a name="setup-unknown-controllers" id="setup-unknown-controllers"></a>Unknown Controllers:</strong><br />
    It is recommended that you create a map for the Unknown Controller in the UI control category. This way, if a user attaches a controller Rewired does not recognize, they should still be able to control the UI reasonably well.</p>
    <p>There is no way to know what axes or buttons will actually be available on these controllers, but you can make some basic assumptions that should allow most controllers to control the UI.</p>
    <ul>
      <li>Axis 0: Map to your &quot;UIHorizontal&quot; Action. (Axis 0 is almost always the horizontal axis on the first joystick)</li>
      <li>Axis 1: Map to your &quot;UIVertical&quot; Action and Invert this axis. (Axis 1 is almost always the vertical axis on the first joystick and is always inverted.)</li>
      <li>Button 0: Map to your &quot;UISubmit&quot; Action.</li>
      <li>Button 1: Map to your &quot;UICancel&quot; Action.</li>
    </ul>
    <p><img src="files/images/controlmapper_unknowncontrollermap.png" width="712" height="171" /></p>
    <p>Of course, the above are only recommendations. You can set up your control scheme however you decide.</p>
<p>&nbsp;</p>
    <hr />
    <h2><a name="saving-and-loading" id="saving-and-loading"></a>Saving and Loading User Data</h2>
    <p><img src="files/images/controlmapper_userdatastore.png" width="554" height="97" /></p>
    <p>Saving and loading of user data is handled by the <a href="UserDataStore.html">UserDataStore</a> component on the Rewired Input Manager. By default, this component does not exist on the Rewired Input Manager. Without this component, data will never be saved or loaded and will not persist between game sessions.</p>
    <p>If you add a UserDataStore derived component to the Rewired Input Manager, it will be used to save and load data. Rewired includes a UserDataStore_PlayerPrefs component which will use PlayerPrefs to save the controller data. Simply add this component to your Rewired Input Manager and data will be loaded and saved as needed.</p>
    <p>Control Mapper will save data when any of the following occur:</p>
    <ul>
      <li>The Control Mapper window is closed by the user.</li>
      <li>A joystick is unplugged.</li>
      </ul>
    <p>Control Mapper will load saved data when any of the following occur:</p>
    <ul>
      <li>At runtime start if &quot;Load Data On Start&quot; is checked in the UserDataStore_PlayerPrefs component inspector.</li>
      <li>A joystick is plugged in.</li>
    </ul>
    <p>If you are using multiple different Rewired Input Managers in different scenes, they all must have a UserDataStore_PlayerPrefs component and the &quot;Player Prefs Key Prefix&quot; must match in order for the same save data to be loaded by each Rewired Input Manager.</p>
    <p>If you don't want to use PlayerPrefs, you can create your own data storage system using UserDataStore. See <a href="UserDataStore.html">User Data Store</a> for more information.</p>
    <p><strong>IMPORTANT: Saved XML data is not updated when you make changes to the Rewired Input Manager</strong></p>
    <p>Control Mapper does not manage changes between the Rewired Input Manager and data that is already saved to XML. If you make changes to the Rewired Input Manager settings such as adding new controls to a Joystick Map, these new changes will not be preserved when loading saved XML data. The only automated solutions would be to either clear the save data by clearing Player Prefs so that the Rewired Input Manager defaults are used instead or load the default maps in the Player for the any controllers that changed and save those to XML overwriting the existing saved mappings.</p>
    <p>Management of saved user data is up to the developer. If you have special needs beyond the basic use cases, you should extend and replace the <a href="UserDataStore.html#playerprefs">UserDataStore_PlayerPrefs</a> component with a new UserDataStore component that meets your specific needs.</p>
    <h3 style="background-color:#FF6"><a name="clear-xml-data" id="clear-xml-data"></a>***IMPORTANT***:</h3>
    <p>When doing testing, if you open and close the Control Mapper screen or unplug a joystick while the Control Mapper screen is open, you are causing it to save XML data in the registry even if you didn't change any mappings or settings. The next time you start the game (provided the Rewired Input Manager with the UserDataStore_PlayerPrefs component is present in the scene), it will load that saved XML data from the registry, NOT the default settings stored in the Rewired Input Manager. While doing testing, you will most likely want to clear this saved data so the default settings in the Rewired Input Manager are loaded instead of the saved data. This can be done by clearing Player Prefs by opening the &quot;Debug Options&quot; foldout on the Rewired Input Manager inspector.</p>
<p>If you are confused by your input configuration not matching what you defined in the Rewired Input Manager, or you are seeing different behaviors in the Unity Editor versus a game build, you most likely are loading XML data that you are unaware that you saved. Clear Player Prefs and everything will reset to the defaults.</p>
    <p>&nbsp;</p>
<hr />
    <h2><a name="conflict-checking" id="conflict-checking"></a>Conflict Checking</h2>
    <p><a href="HowTos.html#conflict-checking">See How To's - Conflict Checking.</a></p>
    <p>(See <a href="#inspector-options">Inspector Options</a> for the option to allow conflicting assignments.)</p>
    <p>&nbsp;</p>
    <hr />
    <h2><a name="theming" id="theming"></a>Theming</h2>
<p><img src="files/images/controlmapper_theme1.png" width="300" height="279" /></p>
    <p>Control Mapper comes with a basic theming system to allow you to change colors, fonts, and sprites by simply editing a theme file.</p>
    <p><strong>The process:</strong></p>
    <ol>
      <li>Make a copy of the DefaultTheme file in the ControlMapper/Themes directory.</li>
      <li>Move this copy to somewhere inside your project (outside the Rewired folder).</li>
      <li>On the Control Mapper game object in your scene, assign the new theme file you created to the Theme field in the inspector.</li>
      </ol>
    <p><strong>Editing the theme:</strong></p>
    <p>Edit the theme file in the inspector. There is no user-friendly inspector for this theming process, but the names of the fields should be self-explanatory. Make your changes and they will show up when you launch the game. (Theme setting changes can not be viewed in real-time in the editor.)</p>
    <p>These theme options  just mirror the various options available on Unity UI components such as Image, Button, Slider, etc. If you don't understand what these options mean, see the Unity UI documentation on these components.</p>
    <p>&nbsp;</p>
    <hr />
    <h2><a name="language" id="language"></a>Language</h2>
<p></p>
    <p>Control Mapper has a basic language system which you can use to customize button and section labels, window titles, and more.</p>
    <p><strong>The process:</strong></p>
    <ol>
      <li>Make a copy of the DefaultEnglish file in the ControlMapper/Languages directory.</li>
      <li>Move this copy to somewhere inside your project (outside the Rewired folder).</li>
      <li>On the Control Mapper game object in your scene, assign the new language file you created to the Language field in the inspector.</li>
    </ol>
    <p><strong>Editing the language:</strong></p>
    <p>Edit the language file in the inspector. There is no user-friendly inspector for this language editing process, but the names of the fields should be self-explanatory. Make your changes and they will show up when you launch the game. (Language setting changes can not be viewed in real-time in the editor.)</p>
    <p><strong>Translating strings of Rewired objects (Players, Actions, Controller names, Controller elements, etc.):</strong><strong>ADVANCED USERS ONLY</strong></p>
    <p>Do not attempt to do this if you are inexperienced at C# or are a beginner with Unity. This is an unsupported feature and step-by-step guidance will not be provided.</p>
    <p>Rewired does not presently have a localization system built in where all strings in the system can be translated into different languages. Because I have been asked numerous times about how to translate these strings when using Control Mapper, I have added an interim translation framework to Control Mapper for you to be able to translate these items when displayed through the Control Mapper interface. If at some point in the future a core localization system is developed, this Control Mapper translation of these elements is likely to become obsolete.</p>
    <p>The LanguageData class provides framework for translating all the Rewired elements, but it does not provide a way to store the translation data. You will have to provide that part in an extended class. LanguageData merely provides an interface for Control Mapper to call into for all strings.</p>
    <p>In order to implement translation of these elements, you will have to override the LanguageDataBase class and extend it in order to plug in your translation and override each function pertaining to translation of Rewired core item names. Copy LanguageData.cs to a location outside the Rewired folder hierarchy, rename it to something else, change the class name to match, and modify all the functions below the line that reads &quot;// Translation of Rewired core items&quot; to translate the elements you want to translate using whatever lookup system you have set up for that. You will then have to <a href="https://docs.unity3d.com/ScriptReference/ScriptableObject.CreateInstance.html">make a ScriptableObject instance</a> of your new extended class, then attach that to Control Mapper in the inspector so it uses it instead of the default language object.</p>
    <p>Relevant topics:</p>
    <ul>
      <li> <a href="HowTos.html#identifying-recognized-controllers">Idenfying recognized joysticks</a><a href="HowTos.html#identifying-recognized-controllers"><br />
      </a></li>
      <li><a href="https://guavaman.com/rewired/files/docs/RewiredControllersCSV.zip">CSV file of Joysticks</a></li>
      <li><a href="https://guavaman.com/rewired/files/docs/RewiredControllerElementIdentifiersCSV.zip">CSV file of Joystick elements</a></li>
      <li><a href="https://guavaman.com/rewired/files/docs/RewiredKeyboardElementIdentifiersCSV.zip">CSV file of Keyboard elements</a></li>
      <li><a href="https://guavaman.com/rewired/files/docs/RewiredMouseElementIdentifiersCSV.zip">CSV file of Mouse elements</a></li>
    </ul>
<p>&nbsp;</p>
    <hr />
    <h2><a name="misc-notes" id="misc-notes"></a>Misc Notes</h2>
    <p><strong>Other UI Selectables outside or behind Control Mapper</strong></p>
    <ul>
      <li>UI auto navigation will find other  UI elements outside Control Mapper and try to navigate to them when a direction is pressed. If you have other UI elements behind Control Mapper, you must disable interactability on them. The easiest way to do that is with a Canvas Group setting CanvasGroup.interactable to false.</li>
      <li>If you have multiple Canvases in your scene and you want auto navigation to work between elements on the different Canvases, all Canvases must have the same Render Mode.</li>
    </ul>
    <p><strong>Opening and closing the screen</strong></p>
<p>The easiest way to control the screen is by assigning Actions in the <a href="#screen-control-actions">Screen Control Actions section of the inspector</a>.</p>
    <p>Another way is by using a Unity UI button and assigning ControlMapper.Open() to the OnClick event.</p>
    <p>You can also control the screen through scripting:</p>
    <ul>
      <li>Opening the screen: ControlMapper.Open();</li>
      <li>Closing the screen: ControlMapper.Close();</li>
      </ul>
    <p>Control Mapper also has events for when the screen is opened and closed should you need that information.</p>
<p><strong>Changing settings through scripting</strong></p>
    <p> Certain Control Mapper options can be changed through scripting, but not in real-time while the screen is open. This can be useful should you need to make changes based on some criteria such as platform-specific settings. For example, before initializing the Control Mapper (before opening it), you could disable keyboard support. This may be useful if you're publishing your game on a platform that doesn't support keyboards, but you don't want to create a separate Control Mapper for this.    </p>
    <p><strong>Screen scale</strong></p>
    <p>Scale of the Control Mapper by default is handled by the Canvas Scaler Fitter component on the Canvas below the main Control Mapper game object. The Canvas Scaler Fitter component controls the scale settings for the display based on the current aspect ratio of the screen. Breakpoints have been predefined to help keep the display usable at various screen aspect ratios.</p>
    <p>&nbsp;</p>
    <hr />
    <h2><a name="faq" id="faq"></a>Frequently Asked Questions</h2>
    <p class="question">How do I center the Control Mapper window?</p>
<p>ControlMapper -&gt; Canvas -&gt; MainPageGroup</p>
<p>Set equal paddings on Left, Top, Right, and Bottom and the window will be centered.</p>
<p class="question">Is it possible to visually edit the Control Mapper layout in real-time?</p>
<p>Not easily. Control Mapper has many dynamically-generated UI elements which are generated at runtime based on the options set in the inspector. It is not a static UI layout that can easily be edited in real-time. However, you can press Play in the editor and edit some settings to get a preview of how changes might look. In order to commit those settings though, you have to stop Play mode and remake the changes to the game objects while it is not in Play mode.</p>
<p class="question">I want to customize more  than what's available in the theme settings. How do I do that?</p>
<p>The theme was meant to provide basic customization of the styles on all elements because they're dynamically generated. Basic functional customization is done through the Control Mapper inspector. Anything beyond that is out of the scope of the tool and up to you to implement if you choose to and requires a very good knowledge of Unity UI.</p>
<p>There are certain areas which you cannot change the layout  because they're generated by scripting such as the columns of input fields. Other things can be moved and reordered such as the various sections at the top. But be aware that some changes will cause problems. One thing everyone seems to want to do is to move the Done button to the bottom. I advise against this because the auto-scroll system put in place for the input field grid will make it so you have to scroll through every Action entry before it will jump down to the Done button. </p>
<p>Alignments, padding, spacing, etc. can be changed with the standard options in Unity's UI system for the various UI game objects in the hierarchy.</p>
<p> You  have to know Unity UI very well and you can customize it pretty much however you want with the exception of the input grid. If you want to change that (beyond styling), you'll have to edit source code. And be aware that the layout, especially concerning the input grid scroll area, is prone to breaking depending on what you do.</p>
<p>The basic groupings that pre-exist in the scene can all be rearranged at will:</p>
<ul>
  <li>WindowButtonGroup</li>
  <li>PlayersGroup</li>
  <li>ControllerGroup</li>
  <li>SettingAndMapCategoriesGroup</li>
  <li>InputGridGroup</li>
</ul>
<p>You can press Play and change the order of these in the hierarchy and see them switch places in real-time. Committing changes requires you do it again outside Play mode though.  The objects inside these groups are dynamically generated based on settings in the Control Mapper inspector. In addition, visibility of these groups may also be affected by Control Mapper inspector options. You could manually set backgrounds on these groups in by adding Image components to them.</p>
<p>Any dynamically generated elements are loaded from the prefabs:  Rewired/Extras/ControlMapper/Prefabs/Parts</p>
<p>Some things you could customize by modifying the prefabs, while some options would be overridden by the theme when it loads.</p>
<p>The ControlMapper-&gt;Canvas: Canvas Scaler Fitter component governs responsive break points. It can be disabled if you don't need that functionality.</p>
<p>If you need to modify any source prefab components, it's best to work with copies of everything so you can still update Rewired and not lose your changes. If you copy all the prefabs, you will need to re-assign the copies as the sources for the dynamically generated objects in the ControlMapper inspector -&gt; Advanced Settings -&gt; Internal Data -&gt; Prefabs section.  If you want to customize the popup windows, they are also in the prefabs folder. Same rules apply. Copy them, then re-assign the copies as the prefab sources.</p>
<p class="question">How can I disable/hide the Pre-Input Assignment Time screen? I don't really need it because my game doesn't use analog input. I tried setting the time to 0 but it still flashes for a moment.</p>
<p>There is no way to disable that without changing the source code.<br />
  <br />
Even if your game doesn't use analog input, your players may still use physical analog controls. Disabling this would be a bad idea because the purpose of it is to prevent any inadvertent assignments such as when releasing a stick and its action of auto-centering itself registers as a negative stick movement mapping that to your Action.</p>
<p>&nbsp;</p>
<hr />
    <h2><a name="inspector-options" id="inspector-options"></a>Inspector Options</h2>
    <p>Many configuration options are available through the inspector. Most options have tool-tip help.</p>
    <p>&nbsp;</p>
    <p><strong><a name="inspector-rewired-input-manager" id="inspector-rewired-input-manager"></a>Rewired Input Manager</strong></p>
    <p><img src="files/images/controlmapper_inspector_rewired-input-manager.png" width="676" height="47" /></p>
    <p>You must link a Rewired Input Manager to this field in the inspector. All input data will be read from the Rewired Input Manager linked here.    </p>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-dont-destroy-on-load" id="inspector-dont-destroy-on-load"></a>Don't Destroy On Load</strong></p>
    <p>Set to True to prevent the Game Object from being destroyed when a new scene is loaded.</p>
    <p>NOTE: Changing this value from True to False at runtime will have no effect because Object.DontDestroyOnLoad cannot be undone once set.</p>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-screen-options" id="inspector-screen-options"></a>Screen Options</strong></p>
<p><img src="files/images/controlmapper_inspector_screen-options.png" width="676" height="65" /></p>
<p>Various options for the control mapper screen.</p>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="22%" valign="top">Open On Start</td>
    <td width="78%" valign="top"><p>Open the control mapping screen immediately on start. Mainly used for testing.</p></td>
  </tr>
</table>
<p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-player-options" id="inspector-player-options"></a>Player Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_player-options.png" alt="" width="676" height="90" /></p>
    <p>Various options for Players.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Show Players</td>
        <td width="78%" valign="top"><p>Display a selectable list of Players. If your game only supports 1 player, you can disable this.</p></td>
      </tr>
      <tr>
        <td valign="top">Show Players Group Label</td>
        <td valign="top">Show the label for the Players button group?</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-controller-options" id="inspector-controller-options"></a>Controller Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_controller-options.png" alt="" width="676" height="164" /></p>
    <p>Various options for controllers.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Show Controller</td>
        <td width="78%" valign="top"><p>Display the Controller column for input mapping.</p></td>
      </tr>
      <tr>
        <td valign="top">Max Controllers Per Player</td>
        <td valign="top"><p>The maximum number of controllers allowed to be assigned to a Player. If set to any value other than 1, a selectable list of currently-assigned controller will be displayed to the user. [0 = infinite]</p>
          <p>This field is only displayed if &quot;Auto-Assign Joysticks&quot; is disabled in the Rewired Input Manager -&gt; Settings. In this case, the max number of controllers displayed per player is equal to the &quot;Max Joysticks Per Player&quot; setting in the Rewired Input Manager  -&gt; Settings.</p></td>
      </tr>
      <tr>
        <td valign="top">Controller Input Field Count</td>
        <td valign="top">The number of input fields to display for joysticks. If you want to support alternate mappings on the same device, set this to 2 or more.</td>
      </tr>
      <tr>
        <td valign="top">Show Assigned Controllers</td>
        <td valign="top">Show the Assigned Controllers group? If joystick auto-assignment is enabled in the Rewired Input Manager and the max joysticks per player is set to any value other than 1, the Assigned Controllers group will always be displayed.</td>
      </tr>
      <tr>
        <td valign="top">Show Assigned Controllers Group Label</td>
        <td valign="top">Show the label for the Assigned Controllers button group?</td>
      </tr>
      <tr>
        <td valign="top">Show Controller Group Label</td>
        <td valign="top">Show the label for the Controller button group?</td>
      </tr>
      <tr>
        <td valign="top">Show Controller Name Label</td>
        <td valign="top">Show the label for the current controller name?</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-keyboard-options" id="inspector-keyboard-options"></a>Keyboard Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_keyboard-options.png" alt="" width="687" height="90" /><br />
    </p>
    <p>Various options for the Keyboard.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Show Keyboard</td>
        <td width="78%" valign="top"><p>Display the Keyboard column for input mapping.</p></td>
      </tr>
      <tr>
        <td valign="top">Keyboard Input Field Count</td>
        <td valign="top">The number of input fields to display for the keyboard. If you want to support alternate mappings on the same device, set this to 2 or more.</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-mouse-options" id="inspector-mouse-options"></a>Mouse Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_mouse-options.png" alt="" width="687" height="127" /></p>
    <p>Various options for the Mouse.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Show Mouse</td>
        <td valign="top">Display the Mouse column for input mapping.</td>
      </tr>
      <tr>
        <td valign="top">Mouse Input Field Count</td>
        <td valign="top">The number of input fields to display for the mouse. If you want to support alternate mappings on the same device, set this to 2 or more.</td>
      </tr>
      <tr>
        <td valign="top">Ignore Mouse X Axis Assignment</td>
        <td valign="top">If checked, mouse X-axis movement will always be ignored during input assignment. Check this if you don't want the horizontal mouse axis to be user-assignable to any Actions.</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Ignore Mouse Y Axis Assignment</td>
        <td width="78%" valign="top"><p>If checked, mouse Y-axis movement will always be ignored during input assignment. Check this if you don't want the vertical mouse axis to be user-assignable to any Actions.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
<hr />
    <p><strong><a name="inspector-input-field-options" id="inspector-map-categories-and-actions2"></a>Input Field Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_input-field-options.png" alt="" width="674" height="88" /></p>
    <p>Various options for the input field grid.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Show Full Axis Input Fields</td>
        <td width="78%" valign="top"><p>Display a full-axis input assignment field for every axis-type Action in the input field grid. Also displays an invert toggle for the user  to invert the full-axis assignment direction.</p>
          <p>IMPORTANT: This field is required if you have made any full-axis assignments in the Rewired Input Manager or in saved XML user data. Disabling this field when you have full-axis assignments will result in the inability for the user to view, remove, or modify these full-axis assignments. In addition, these assignments may cause conflicts when trying to remap the same axes to Actions.</p></td>
      </tr>
      <tr>
        <td valign="top">Show Split Axis Input Fields</td>
        <td valign="top"><p>Display a positive and negative input assignment field for every axis-type Action in the input field grid.</p>
          <p>IMPORTANT: These fields are required to assign buttons, keyboard keys, and hat or D-Pad directions to axis-type Actions. If you have made any split-axis assignments or button/key/D-pad assignments to axis-type Actions in the Rewired Input Manager or in saved XML user data, disabling these fields will result in the inability for the user to view, remove, or modify these assignments. In addition, these assignments may cause conflicts when trying to remap the same elements to Actions.</p></td>
      </tr>
    </table>
    <p></p>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-map-categories-and-actions" id="inspector-map-categories-and-actions"></a>Map Categories and Actions</strong></p>
    <p><img src="files/images/controlmapper_inspector_maps-and-actions.png" alt="" width="676" height="451" /></p>
    <p>Options for the Map Categories and Actions displayed to the user for input mapping.</p>
    <p>You can define a list of Map Categories to be shown to the user for remapping. You can choose to show one or multiple Map Categories. If you define multiple Map Categories here, a new row of buttons will be shown that will allow the user to select a Map Category for which to create input assignments.</p>
    <p> You must define a list of assignable Actions to displayed to the user for each Map Category. You can choose to show the user a list of all user-assignable Actions contained in an one or more Action Categories or a customized list of individual Actions.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Show Action Category Labels</td>
        <td valign="top">Display section labels for each Action Category in the input field grid. Only applies if Action Categories are used to display the Action list.</td>
      </tr>
      <tr>
        <td valign="top">Show Map Categories Group Label</td>
        <td valign="top">Show the label for the Map Categories button group?</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Map Category</td>
        <td width="78%" valign="top"><p>The Map Category that will be displayed to the user for mapping.</p></td>
      </tr>
      <tr>
        <td valign="top">Action List Mode</td>
        <td valign="top">Choose whether you want to list Actions to display for this Map Category by individual Action or by all the Actions in an Action Category.</td>
      </tr>
      <tr>
        <td valign="top">Action Categories</td>
        <td valign="top">List each Action Category you want to be displayed for this map category. This will list all user-assignable Actions in that category allowing the user to make assignments for each of these Actions.</td>
      </tr>
      <tr>
        <td valign="top">Actions</td>
        <td valign="top">List each Action you want to be displayed for this map category. This will allow the user to make assignments for each of these Actions.</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-default-layouts" id="inspector-default-layouts"></a>Default Layouts</strong></p>
    <p><img src="files/images/controlmapper_inspector_default-layouts.png" alt="" width="687" height="163" /></p>
    <p>The controller map Layout that will be shown to the user. This remapping system only supports a single fixed Layout per controller type.</p>
    <p>This Layout defined here is only a suggestion. If a ControllerMap with this Layout is found in the Player, it will be used. Otherwise, the first ControllerMap in the correct category found will be used regardless of the Layout id.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Keyboard Map Default Layout</td>
        <td valign="top">The Layout of the Keyboard Maps to be displayed.</td>
      </tr>
      <tr>
        <td valign="top">Mouse Map Default Layout</td>
        <td valign="top">The Layout of the Mouse Maps to be displayed.</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Joystick Map Default Layout</td>
        <td width="78%" valign="top"><p>The Layout of the Joystick Maps to be displayed.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-input-behaviors" id="inspector-input-behaviors"></a>Input Behaviors</strong></p>
    <p><img src="files/images/controlmapper_inspector_input-behaviors.png" alt="" width="676" height="512" /></p>
    <p>Settings for user-modifiable Input Behaviors. Only certain properties are supported.</p>
    <p>You can define a list of Input Behaviors to be shown to the user for modification. If enabled, new controls will be displayed so the user can modify these settings. This is useful if you need to allow the user to set certain per-Action sensitivity levels such as Mouse Look Sensitivity.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Show Input Behavior Settings</td>
        <td width="78%" valign="top"><p>If checked, controls will be displayed which will allow the user to customize certain Input Behavior settings.</p></td>
      </tr>
      <tr>
        <td valign="top">Show Settings Group Label</td>
        <td valign="top">Show the label for the Settings button group?</td>
      </tr>
      <tr>
        <td valign="top">Input Behavior</td>
        <td valign="top">The Input Behavior that will be displayed to the user for modification.</td>
      </tr>
      <tr>
        <td valign="top">Label Language Key</td>
        <td valign="top">If set to a non-blank value, this key will be used to look up the name in Language to be displayed as the title for the Input Behavior control set. Otherwise, the name field of the InputBehavior will be used.</td>
      </tr>
      <tr>
        <td valign="top">Joystick Axis Sensitivity Label Language Key</td>
        <td valign="top">If set to a non-blank value, this name will be displayed above the individual slider control. Otherwise, no name will be displayed.</td>
      </tr>
      <tr>
        <td valign="top">Show Joystick Axis Sensitivity</td>
        <td valign="top">If checked, a slider will be displayed so the user can change this value.</td>
      </tr>
      <tr>
        <td valign="top">Joystick Axis Sensitivity Icon</td>
        <td valign="top">The icon to display next to the slider. Set to none for no icon.</td>
      </tr>
      <tr>
        <td valign="top">Joystick Axis Sensitivity Min</td>
        <td valign="top">Minimum value the user is allowed to set for this property.</td>
      </tr>
      <tr>
        <td valign="top">Joystick Axis Sensitivity Max</td>
        <td valign="top">Maximum value the user is allowed to set for this property.</td>
      </tr>
      <tr>
        <td valign="top">Mouse XY Axis Sensitivity Label Language Key</td>
        <td valign="top">If set to a non-blank value, this name will be displayed above the individual slider control. Otherwise, no name will be displayed.</td>
      </tr>
      <tr>
        <td valign="top">Show Mouse XY Axis Sensitivity</td>
        <td valign="top">If checked, a slider will be displayed so the user can change this value.</td>
      </tr>
      <tr>
        <td valign="top">Mouse XY Axis Sensitivity Icon</td>
        <td valign="top">The icon to display next to the slider. Set to none for no icon.</td>
      </tr>
      <tr>
        <td valign="top">Mouse XY Axis Sensitivity Min</td>
        <td valign="top">Minimum value the user is allowed to set for this property.</td>
      </tr>
      <tr>
        <td valign="top">Mouse XY Axis Sensitivity Max</td>
        <td valign="top">Maximum value the user is allowed to set for this property.</td>
      </tr>
  </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-element-assignment-options" id="inspector-element-assignment-options"></a>Element Assignment Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_element-assignment-options.png" /></p>
    <p>Various options for the element assignment.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Allow Element Assignment Conflicts</td>
        <td width="78%" valign="top">If enabled, when an element assignment conflict is found, an option will be displayed that allows the user to make the conflicting assignment anyway.</td>
      </tr>
      <tr>
        <td valign="top">Allow Element Assignment Swap</td>
        <td valign="top">If enabled, when an element assignment conflict is found, an option will be displayed that allows the user to swap conflicting assignments. This only applies to the first conflicting assignment found. This option will not be displayed if Allow Element Assignment Conflicts is enabled.</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-timer-options" id="inspector-timer-options"></a>Timer Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_timer-options.png" alt="" width="687" height="128" /></p>
    <p>Various timer options.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Pre Input Assignment Timeout</td>
        <td valign="top">The time in seconds the user has to press an element on a controller while waiting for axes to be centered before assigning input.</td>
      </tr>
      <tr>
        <td valign="top">Input Assignment Timeout</td>
        <td valign="top">The time in seconds the user has to press an element on a controller when assigning input. If this time elapses with no user input on the target controller, the assignment will be canceled.</td>
      </tr>
      <tr>
        <td valign="top">Controller Assignment Timeout</td>
        <td valign="top">The time in seconds the user has to press an element on a controller when assigning a controller to a Player. If this time elapses with no user input a controller, the assignment will be canceled.</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Axis Calibration Timeout</td>
        <td width="78%" valign="top"><p>The time in seconds the user has to press an element on a controller during calibration.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
<hr />
    <p><strong><a name="inspector-input-grid-layout-options" id="inspector-input-grid-layout-options"></a>Input  Grid Layout Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_input-grid-layout-options.png" alt="" width="676" height="200" /></p>
    <p>Dimensions for various elements in the input grid.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Action Label Width</td>
        <td valign="top">The width in relative pixels of the Action label column.</td>
      </tr>
      <tr>
        <td valign="top">Keyboard Col Max Width</td>
        <td valign="top">The width in relative pixels of the Keyboard column.</td>
      </tr>
      <tr>
        <td valign="top">Mouse Col Max Width</td>
        <td valign="top">The width in relative pixels of the Mouse column.</td>
      </tr>
      <tr>
        <td valign="top">Controller Col Max Width</td>
        <td valign="top">The width in relative pixels of the Controller column.</td>
      </tr>
      <tr>
        <td valign="top">Input Row Height</td>
        <td valign="top">The height in relative pixels of the input grid button rows.</td>
      </tr>
      <tr>
        <td valign="top">Input Column Spacing</td>
        <td valign="top">The width in relative pixels of spacing between columns.</td>
      </tr>
      <tr>
        <td valign="top">Input Row Category Spacing</td>
        <td valign="top">The height in relative pixels of the space between Action Category sections. Only applicable if Show Action Category Labels is checked.</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Invert Toggle Width</td>
        <td width="78%" valign="top"><p>The width in relative pixels of the invert toggle buttons.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-popup-window-options" id="inspector-popup-window-options"></a>Popup Window Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_popup-window-options.png" alt="" width="687" height="91" /></p>
    <p>Various options for popup windows.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Default Window Width</td>
        <td valign="top">&nbsp;</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Default Window Height</td>
        <td width="78%" valign="top"><p>&nbsp;</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="screen-control-actions" id="screen-control-actions"></a><a name="inspector-screen-control-actions" id="inspector-screen-control-actions"></a>Screen Control Actions</strong></p>
    <p><img src="files/images/controlmapper_inspector_screen-control-actions.png" width="662" height="147" /></p>
    <p>Actions that control the mapping screen.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Screen Open Action</td>
        <td valign="top">An Action that when activated will close the main screen as long as no popup windows are open.</td>
      </tr>
      <tr>
        <td valign="top">Screen Close Action</td>
        <td valign="top">An Action that when activated will open the main screen if it is closed.</td>
      </tr>
      <tr>
        <td valign="top">Screen Toggle Action</td>
        <td valign="top">An Action that when activated will alternately close or open the main screen as long as no popup windows are open.</td>
      </tr>
      <tr>
        <td valign="top">Universal Cancel Action</td>
        <td valign="top">An Action that when activated will cancel and close any open popup window.  Use with care because the element assigned to this Action can never be mapped by the user (because it would just cancel his assignment).</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Universal Cancel Closes Screen</td>
        <td width="78%" valign="top"><p>If enabled, Universal Cancel will also close the main screen if pressed when no windows are open.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-theme-options" id="inspector-theme-options"></a>Theme Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_theme-options.png" alt="" width="687" height="92" /></p>
    <p>UI theme options.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td valign="top">Use Theme Settings</td>
        <td valign="top">If enabled, UI elements will be themed based on the settings in Theme Settings.</td>
      </tr>
      <tr>
        <td width="22%" valign="top">Theme Settings</td>
        <td width="78%" valign="top"><p>Must be assigned a ThemeSettings object. Used to theme UI elements.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
<hr />
    <p><strong><a name="inspector-language-actions" id="inspector-language-actions"></a>Language Options</strong></p>
    <p><img src="files/images/controlmapper_inspector_language-options.png" alt="" width="687" height="74" /></p>
    <p>Language options.</p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top">Language</td>
        <td width="78%" valign="top"><p>Must be assigned a LanguageData object. Used to retrieve language entries for UI elements.</p></td>
      </tr>
    </table>
    <p>&nbsp;</p>
<hr />
    <p><strong><a name="inspector-events" id="inspector-events"></a>Events</strong></p>
    <p><img src="files/images/controlmapper_inspector_events.png" alt="" /></p>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" valign="top"><p>On Screen Opened</p></td>
        <td width="78%" valign="top"><p>Event sent when the UI is opened.</p></td>
      </tr>
      <tr>
        <td valign="top">On Screen Closed</td>
        <td valign="top">Event sent when the UI is closed.</td>
      </tr>
      <tr>
        <td valign="top">On Popup Window Opened</td>
        <td valign="top">Event sent when a popup window is opened.</td>
      </tr>
      <tr>
        <td valign="top">On Popup Window Closed</td>
        <td valign="top">Event sent when a popup window is closed.</td>
      </tr>
      <tr>
        <td valign="top">On Input Polling Started</td>
        <td valign="top">Event sent when polling for input has started.</td>
      </tr>
      <tr>
        <td valign="top">On Input Polling Ended</td>
        <td valign="top">Event sent when polling for input has ended.</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <hr />
    <p><strong><a name="inspector-advanced-settings" id="inspector-advanced-settings"></a>Advanced Settings</strong></p>
    <p><img src="files/images/controlmapper_inspector_advanced-settings.png" alt="" width="687" height="68" /></p>
    <p>These are internal settings like references to GameObject and Prefabs. You should not have to change these.</p>
    <p>&nbsp;</p>
<div class="bottom-pager clearfix">
  <a class="back-button" href="Documentation.html" title="Actions"><span class="button-img"></span>Documentation</a></div>
<!-- InstanceEndEditable -->
        </div>
        
    </div>
  <div class="footer clearfix">
   	<p class="left">Copyright &copy;2014-2021 <a href="https://guavaman.com" title="Guavaman Enterprises">Guavaman Enterprises</a>. All rights reserved. No materials may be reproduced without permission.</p>
  	<p class="right"><a href="https://guavaman.com/projects/rewired" title="Return to Rewired Website">Return to Rewired Website</a></p>
  </div>
  <!-- end .content --></div>
  <!-- end .container --></div>
  
  
</body>
<!-- InstanceEnd --></html>
